home *** CD-ROM | disk | FTP | other *** search
/ Windows Game Programming for Dummies (2nd Edition) / WinGamProgFD.iso / mac / DirectX SDK / DXSDK / include / DShowIDL / mmstream.idl < prev    next >
Text File  |  2001-10-08  |  5KB  |  191 lines

  1. //------------------------------------------------------------------------------
  2. // File: MMStream.idl
  3. //
  4. // Desc: MultiMedia streaming interface IDL file.  Used by MIDL tool
  5. //       to generate mmstream.h.
  6. //
  7. // Copyright (c) 1998-2001, Microsoft Corporation.  All rights reserved.
  8. //------------------------------------------------------------------------------
  9.  
  10.  
  11. import "unknwn.idl";
  12.  
  13. cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
  14. cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)")
  15. cpp_quote("#define MS_S_PENDING                  MS_SUCCESS_CODE(1)")
  16. cpp_quote("#define MS_S_NOUPDATE                 MS_SUCCESS_CODE(2)")
  17. cpp_quote("#define MS_S_ENDOFSTREAM              MS_SUCCESS_CODE(3)")
  18.  
  19. cpp_quote("#define MS_E_SAMPLEALLOC              MS_ERROR_CODE(1)")
  20. cpp_quote("#define MS_E_PURPOSEID                MS_ERROR_CODE(2)")
  21. cpp_quote("#define MS_E_NOSTREAM                 MS_ERROR_CODE(3)")
  22. cpp_quote("#define MS_E_NOSEEKING                MS_ERROR_CODE(4)")
  23. cpp_quote("#define MS_E_INCOMPATIBLE             MS_ERROR_CODE(5)")
  24. cpp_quote("#define MS_E_BUSY                     MS_ERROR_CODE(6)")
  25. cpp_quote("#define MS_E_NOTINIT                  MS_ERROR_CODE(7)")
  26. cpp_quote("#define MS_E_SOURCEALREADYDEFINED     MS_ERROR_CODE(8)")
  27. cpp_quote("#define MS_E_INVALIDSTREAMTYPE        MS_ERROR_CODE(9)")
  28. cpp_quote("#define MS_E_NOTRUNNING               MS_ERROR_CODE(10)")
  29.  
  30. cpp_quote("// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D}")
  31. cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, ")
  32. cpp_quote("0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
  33.  
  34. cpp_quote("// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D}")
  35. cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,")
  36. cpp_quote("0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
  37.  
  38. cpp_quote("#if(_WIN32_WINNT < 0x0400)")
  39. typedef void (__stdcall * PAPCFUNC)(DWORD_PTR dwParam);
  40. cpp_quote("#endif")
  41.  
  42. typedef LONGLONG STREAM_TIME;
  43.  
  44. typedef GUID MSPID;
  45. typedef REFGUID REFMSPID;
  46.  
  47. typedef enum {
  48.     STREAMTYPE_READ         = 0,
  49.     STREAMTYPE_WRITE        = 1,
  50.     STREAMTYPE_TRANSFORM= 2
  51. } STREAM_TYPE;
  52.  
  53. typedef enum {
  54.     STREAMSTATE_STOP        = 0,
  55.     STREAMSTATE_RUN         = 1
  56. } STREAM_STATE;
  57.  
  58.  
  59. typedef enum {
  60.     COMPSTAT_NOUPDATEOK     = 0x00000001,
  61.     COMPSTAT_WAIT           = 0x00000002,
  62.     COMPSTAT_ABORT          = 0x00000004
  63. } COMPLETION_STATUS_FLAGS;
  64.  
  65. //  Flags for GetInformation
  66. enum {
  67.     MMSSF_HASCLOCK          = 0x00000001,
  68.     MMSSF_SUPPORTSEEK       = 0x00000002,
  69.     MMSSF_ASYNCHRONOUS      = 0x00000004
  70. };
  71.  
  72. //  Flags for StreamSample::Update
  73. enum {
  74.         SSUPDATE_ASYNC      = 0x00000001,
  75.         SSUPDATE_CONTINUOUS = 0x00000002
  76. };
  77.  
  78. interface IMultiMediaStream;
  79. interface IMediaStream;
  80. interface IStreamSample;
  81.  
  82. // IMultiMediaStream interface
  83. [
  84. object,
  85. local,
  86. uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
  87. pointer_default(unique)
  88. ]
  89. interface IMultiMediaStream : IUnknown {
  90.  
  91.     HRESULT GetInformation(
  92.         [out]  DWORD *pdwFlags,
  93.         [out]  STREAM_TYPE *pStreamType);
  94.  
  95.     HRESULT GetMediaStream(
  96.         [in] REFMSPID idPurpose,
  97.         [out] IMediaStream **ppMediaStream);
  98.  
  99.     HRESULT EnumMediaStreams(
  100.         [in] long Index,
  101.         [out] IMediaStream **ppMediaStream);
  102.  
  103.     HRESULT GetState(
  104.         [out] STREAM_STATE *pCurrentState);
  105.  
  106.     HRESULT SetState(
  107.         [in] STREAM_STATE NewState);
  108.  
  109.     HRESULT GetTime(
  110.         [out] STREAM_TIME *pCurrentTime);
  111.  
  112.     HRESULT GetDuration(
  113.         [out] STREAM_TIME *pDuration);
  114.  
  115.     HRESULT Seek(
  116.         [in] STREAM_TIME SeekTime);
  117.  
  118.     HRESULT GetEndOfStreamEventHandle(
  119.         [out] HANDLE *phEOS);
  120. };
  121.  
  122.  
  123. // IMediaStream interface
  124. [
  125. object,
  126. uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
  127. pointer_default(unique)
  128. ]
  129. interface IMediaStream : IUnknown {
  130.     
  131.     HRESULT GetMultiMediaStream(
  132.         [out] IMultiMediaStream **ppMultiMediaStream);
  133.  
  134.     HRESULT GetInformation(
  135.         [out]  MSPID *pPurposeId,
  136.         [out]  STREAM_TYPE *pType);
  137.  
  138.     HRESULT SetSameFormat(
  139.         [in] IMediaStream *pStreamThatHasDesiredFormat,
  140.         [in] DWORD dwFlags);
  141.  
  142.     HRESULT AllocateSample(
  143.         [in]  DWORD dwFlags,
  144.         [out] IStreamSample **ppSample);
  145.     
  146.  
  147.     HRESULT CreateSharedSample(
  148.         [in]  IStreamSample *pExistingSample,
  149.         [in]  DWORD dwFlags,
  150.         [out] IStreamSample **ppNewSample);
  151.  
  152.     HRESULT SendEndOfStream(DWORD dwFlags);
  153. };
  154.  
  155.  
  156. // IStreamSample interface
  157. [
  158. object,
  159. local,
  160. uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
  161. pointer_default(unique)
  162. ]
  163. interface IStreamSample : IUnknown {
  164.     
  165.     HRESULT GetMediaStream(
  166.         [in] IMediaStream **ppMediaStream);
  167.  
  168.     HRESULT GetSampleTimes(
  169.         [out]  STREAM_TIME * pStartTime,
  170.         [out]  STREAM_TIME * pEndTime,
  171.         [out]  STREAM_TIME * pCurrentTime);
  172.  
  173.     HRESULT SetSampleTimes(
  174.         [in]  const STREAM_TIME *pStartTime,
  175.         [in]  const STREAM_TIME *pEndTime);
  176.  
  177.     HRESULT Update(
  178.         [in]            DWORD dwFlags,
  179.         [in]  HANDLE hEvent,
  180.         [in]  PAPCFUNC pfnAPC,
  181.         [in]  DWORD_PTR dwAPCData);
  182.  
  183.     HRESULT CompletionStatus(
  184.         [in] DWORD dwFlags,
  185.         [in] DWORD dwMilliseconds);
  186. };
  187.  
  188.  
  189.  
  190.  
  191.